package 代码记录.指定公司代码练习记录.华为_2024.分值100.第36start;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author zx
 * @create 2024-02-16 13:16
 * 前缀和相关；应该能看懂，感觉不难(暂时跳过)
 */
public class 寻找连续区间_60 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] temp1 = sc.nextLine().split(" ");
        String[] temp2 = sc.nextLine().split(" ");

        int N = Integer.parseInt(temp1[0]);
        int x = Integer.parseInt(temp1[1]);
        int[] arr = new int[temp2.length];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = Integer.parseInt(temp2[i]);
        }
        //计算数组arr的前缀和。即sum[i]表示数组arr的前i个元素的和
        int[] sum = new int[N + 1];
        for (int i = 1; i <= N; i++) {
            sum[i] = sum[i - 1] + arr[i - 1];
        }
        int count = 0;
        for (int i = 0; i < N; i++) {
            //寻找在 sum 数组中与 arr[i] + x 相等的位置 index
            //找到了相等的值，直接取出其索引
            int index = Arrays.binarySearch(sum, sum[i] + x);
            //如果没有找到，则返回的索引值为 -(insertion point) - 1。这里通过取相反数再减一来得到插入位置。
            if (index < 0) {
                index = -(index + 1);
            }
            count += N - index + 1;
        }
        System.out.println(count);
    }
}
